{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 查看FashionMNIST原始数据格式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.363026Z",
     "start_time": "2025-06-26T01:43:29.447990Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(<PIL.Image.Image image mode=L size=28x28 at 0x22B097438F0>, 9)\n"
     ]
    },
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAcABwBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APn+tbw1oNx4m8QWmkWx2yXD4LkZCADJJ+gFbviL4a63oc7COE3MW4hdn38duD976jNc9daDqllIsc9lKrMu4YGeMkdR7gj8KzcV7H8BtEvV16+1iWCeG1Wz8mOV02pIzupwCeuAp6Z98cZ90aIzLIlw0c0ZJ4KgjHoeOa+evjS9n/wnMcNxBPCYLKONFhA2FNzMpGenDcgd816V4K03wefC+m3NlpVhP+5QSXBiR5fMx825iMg5zwce3FdbOzTwgW90lu6uCm8eYrL02soIyCPQgggEdMGQ3cluiPNK0rJwrRQBNueuMkt+teNfGKxsdY8WWdxNqcNo66eieXMwVsb5DnH415Hp2rajpE5n02/urOUjBe3laMkehIPIrVm8eeLrhNknibVivoLtx/I1UPinxC3XXtUP1vJP8ay5JZJpGkldnduSzHJP41//2Q==",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAACS0lEQVR4AWKgA2BkYOD1ZGBgZAHZxcjIAKZBbBBm+quS8v3rj1N/GBiZGP8wMKNIMv91cnnCzuU65+X/vww8/76hSP5iMFVgZtpp2HXm8nUz02PHGUHGQTHjf9cugd//GE7f+cUo8ft0yDSEJCMDw/8TCgyMf34x/Ph3/vYfT0VphLH/GRgY3kt+Z2fl+cH5z8aSSWwHqmsZuJiZvn18p/CPkYnr7z9ZBiaofQwMjMwMPFI/frH++sr/j537K9sldhOE5H9mhnBJJg4Gbtlf7L//cQhvusaCkGT5xXDlBxsXl6rSD2Yunr9PoraeYAGZx8T4+x/DHwaGbV+/s/1/zczxm+H3P2a9jwxMDMz///z6+Y+BwW7ime9v//z78/XrXw6GbwxsX4NAYc3AICSlJhmk/oPpN+czVjbhX1zHeOz+fWR9qcnIYNkkKvCX+cMfrl+M36+HneEVVGC4x/v5GycPHxcj83GpP3+/MTB/Z2DgF0lwy3z24/49VeFfrLxsf+UBY0xqv8vDw87Ayv/4mSiTRACHIrexMdMvJjYGRlYLlpeP+X485mHje/eQ5/uPP+svKwj9+vD77y/Wf4xsaixP/z/mFvnw5jULOysHL9Mbza+P37O/+f3nN6fERwOWC+sTn937wcPGwcb88+//by/+/WX5wfPrw4fffxRfMjIweBWLv/7wl5mNhZnxPysrGysjA+NLBrZ/EpfCGJn+MTA4tYnxMzGz/GV8+f/pvy/MDP9/f2Paff0YJBAYGBg0RN/LPPx1Fx5HFDIAaCTYdiCc4RIAAAAASUVORK5CYII=",
      "text/plain": [
       "<PIL.Image.Image image mode=L size=28x28>"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "import torchvision\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from torchvision import datasets, transforms\n",
    "from deeplearning_func import EarlyStopping, ModelSaver,train_classification_model,plot_learning_curves\n",
    "from deeplearning_func import evaluate_classification_model as evaluate_model\n",
    "# 加载Fashion MNIST数据集，张量就是和numpy数组一样\n",
    "transform = transforms.Compose([])\n",
    "train_dataset = datasets.FashionMNIST(root='./data', train=True, download=True, transform=transform)\n",
    "test_dataset = datasets.FashionMNIST(root='./data', train=False, download=True, transform=transform)\n",
    "print(train_dataset[0])\n",
    "train_dataset[0][0]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 加载数据并处理为tensor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.407799Z",
     "start_time": "2025-06-26T01:43:32.363026Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集形状: (60000, 28, 28)\n",
      "训练集标签数量: 60000\n",
      "测试集形状: (10000, 28, 28)\n",
      "测试集标签数量: 10000\n",
      "[[  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   1   0   0  13  73   0\n",
      "    0   1   4   0   0   0   0   1   1   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   3   0  36 136 127  62\n",
      "   54   0   0   0   1   3   4   0   0   3]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   6   0 102 204 176 134\n",
      "  144 123  23   0   0   0   0  12  10   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0   0 155 236 207 178\n",
      "  107 156 161 109  64  23  77 130  72  15]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   1   0  69 207 223 218 216\n",
      "  216 163 127 121 122 146 141  88 172  66]\n",
      " [  0   0   0   0   0   0   0   0   0   1   1   1   0 200 232 232 233 229\n",
      "  223 223 215 213 164 127 123 196 229   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0 183 225 216 223 228\n",
      "  235 227 224 222 224 221 223 245 173   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0 193 228 218 213 198\n",
      "  180 212 210 211 213 223 220 243 202   0]\n",
      " [  0   0   0   0   0   0   0   0   0   1   3   0  12 219 220 212 218 192\n",
      "  169 227 208 218 224 212 226 197 209  52]\n",
      " [  0   0   0   0   0   0   0   0   0   0   6   0  99 244 222 220 218 203\n",
      "  198 221 215 213 222 220 245 119 167  56]\n",
      " [  0   0   0   0   0   0   0   0   0   4   0   0  55 236 228 230 228 240\n",
      "  232 213 218 223 234 217 217 209  92   0]\n",
      " [  0   0   1   4   6   7   2   0   0   0   0   0 237 226 217 223 222 219\n",
      "  222 221 216 223 229 215 218 255  77   0]\n",
      " [  0   3   0   0   0   0   0   0   0  62 145 204 228 207 213 221 218 208\n",
      "  211 218 224 223 219 215 224 244 159   0]\n",
      " [  0   0   0   0  18  44  82 107 189 228 220 222 217 226 200 205 211 230\n",
      "  224 234 176 188 250 248 233 238 215   0]\n",
      " [  0  57 187 208 224 221 224 208 204 214 208 209 200 159 245 193 206 223\n",
      "  255 255 221 234 221 211 220 232 246   0]\n",
      " [  3 202 228 224 221 211 211 214 205 205 205 220 240  80 150 255 229 221\n",
      "  188 154 191 210 204 209 222 228 225   0]\n",
      " [ 98 233 198 210 222 229 229 234 249 220 194 215 217 241  65  73 106 117\n",
      "  168 219 221 215 217 223 223 224 229  29]\n",
      " [ 75 204 212 204 193 205 211 225 216 185 197 206 198 213 240 195 227 245\n",
      "  239 223 218 212 209 222 220 221 230  67]\n",
      " [ 48 203 183 194 213 197 185 190 194 192 202 214 219 221 220 236 225 216\n",
      "  199 206 186 181 177 172 181 205 206 115]\n",
      " [  0 122 219 193 179 171 183 196 204 210 213 207 211 210 200 196 194 191\n",
      "  195 191 198 192 176 156 167 177 210  92]\n",
      " [  0   0  74 189 212 191 175 172 175 181 185 188 189 188 193 198 204 209\n",
      "  210 210 211 188 188 194 192 216 170   0]\n",
      " [  2   0   0   0  66 200 222 237 239 242 246 243 244 221 220 193 191 179\n",
      "  182 182 181 176 166 168  99  58   0   0]\n",
      " [  0   0   0   0   0   0   0  40  61  44  72  41  35   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]\n",
      " [  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0\n",
      "    0   0   0   0   0   0   0   0   0   0]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([9, 0, 0, 3, 0, 2, 7, 2, 5, 5, 0, 9, 5, 5, 7, 9, 1, 0, 6, 4],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加载Fashion MNIST数据集，张量就是和numpy数组一样\n",
    "transform = transforms.Compose([\n",
    "    transforms.ToTensor(),\n",
    "    transforms.Normalize((0.286,), (0.353,))  \n",
    "])\n",
    "train_dataset = datasets.FashionMNIST(root='./data', train=True, download=True, transform=transform)\n",
    "test_dataset = datasets.FashionMNIST(root='./data', train=False, download=True, transform=transform)\n",
    "\n",
    "# 获取图像和标签\n",
    "# 注意：由于使用了transform，图像已经被转换为张量且标准化\n",
    "# 我们需要从dataset中提取原始图像用于显示\n",
    "train_images = train_dataset.data.numpy()\n",
    "train_labels = train_dataset.targets.numpy()\n",
    "test_images = test_dataset.data.numpy()\n",
    "test_labels = test_dataset.targets.numpy()\n",
    "\n",
    "# 定义类别名称\n",
    "class_names = ['T-shirt/top', '裤子', '套头衫', '连衣裙', '外套',\n",
    "               '凉鞋', '衬衫', '运动鞋', '包', '短靴']\n",
    "\n",
    "# 查看数据集基本信息\n",
    "print(f\"训练集形状: {train_images.shape}\")\n",
    "print(f\"训练集标签数量: {len(train_labels)}\")\n",
    "print(f\"测试集形状: {test_images.shape}\")\n",
    "print(f\"测试集标签数量: {len(test_labels)}\")\n",
    "\n",
    "print(train_images[0])\n",
    "\n",
    "train_labels[0:20]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.450360Z",
     "start_time": "2025-06-26T01:43:32.407799Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([[[-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -7.9909e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -6.6578e-01,  7.7765e-04, -8.1020e-01, -8.1020e-01, -7.9909e-01,\n",
       "           -7.6576e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -7.9909e-01, -7.9909e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -7.7687e-01, -8.1020e-01, -4.1026e-01,\n",
       "            7.0066e-01,  6.0068e-01, -1.2142e-01, -2.1030e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -7.9909e-01, -7.7687e-01, -7.6576e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -7.7687e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -7.4354e-01, -8.1020e-01,  3.2295e-01,\n",
       "            1.4561e+00,  1.1450e+00,  6.7844e-01,  7.8954e-01,  5.5624e-01,\n",
       "           -5.5469e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -6.7689e-01, -6.9911e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,  9.1174e-01,\n",
       "            1.8116e+00,  1.4894e+00,  1.1672e+00,  3.7849e-01,  9.2285e-01,\n",
       "            9.7839e-01,  4.0071e-01, -9.9206e-02, -5.5469e-01,  4.5215e-02,\n",
       "            6.3401e-01, -1.0332e-02, -6.4356e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -7.9909e-01, -8.1020e-01, -4.3659e-02,  1.4894e+00,\n",
       "            1.6672e+00,  1.6116e+00,  1.5894e+00,  1.5894e+00,  1.0006e+00,\n",
       "            6.0068e-01,  5.3402e-01,  5.4513e-01,  8.1175e-01,  7.5621e-01,\n",
       "            1.6742e-01,  1.1006e+00, -7.6987e-02],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -7.9909e-01,\n",
       "           -7.9909e-01, -7.9909e-01, -8.1020e-01,  1.4117e+00,  1.7671e+00,\n",
       "            1.7671e+00,  1.7783e+00,  1.7338e+00,  1.6672e+00,  1.6672e+00,\n",
       "            1.5783e+00,  1.5561e+00,  1.0117e+00,  6.0068e-01,  5.5624e-01,\n",
       "            1.3672e+00,  1.7338e+00, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01,  1.2228e+00,  1.6894e+00,\n",
       "            1.5894e+00,  1.6672e+00,  1.7227e+00,  1.8005e+00,  1.7116e+00,\n",
       "            1.6783e+00,  1.6561e+00,  1.6783e+00,  1.6449e+00,  1.6672e+00,\n",
       "            1.9116e+00,  1.1117e+00, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01,  1.3339e+00,  1.7227e+00,\n",
       "            1.6116e+00,  1.5561e+00,  1.3894e+00,  1.1895e+00,  1.5450e+00,\n",
       "            1.5227e+00,  1.5339e+00,  1.5561e+00,  1.6672e+00,  1.6338e+00,\n",
       "            1.8894e+00,  1.4339e+00, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -7.9909e-01,\n",
       "           -7.7687e-01, -8.1020e-01, -6.7689e-01,  1.6227e+00,  1.6338e+00,\n",
       "            1.5450e+00,  1.6116e+00,  1.3228e+00,  1.0673e+00,  1.7116e+00,\n",
       "            1.5005e+00,  1.6116e+00,  1.6783e+00,  1.5450e+00,  1.7005e+00,\n",
       "            1.3783e+00,  1.5116e+00, -2.3252e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -7.4354e-01, -8.1020e-01,  2.8962e-01,  1.9005e+00,  1.6561e+00,\n",
       "            1.6338e+00,  1.6116e+00,  1.4450e+00,  1.3894e+00,  1.6449e+00,\n",
       "            1.5783e+00,  1.5561e+00,  1.6561e+00,  1.6338e+00,  1.9116e+00,\n",
       "            5.1180e-01,  1.0450e+00, -1.8808e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -7.6576e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -1.9919e-01,  1.8116e+00,  1.7227e+00,\n",
       "            1.7449e+00,  1.7227e+00,  1.8560e+00,  1.7671e+00,  1.5561e+00,\n",
       "            1.6116e+00,  1.6672e+00,  1.7894e+00,  1.6005e+00,  1.6005e+00,\n",
       "            1.5116e+00,  2.1185e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -7.9909e-01, -7.6576e-01, -7.4354e-01,\n",
       "           -7.3243e-01, -7.8798e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01,  1.8227e+00,  1.7005e+00,  1.6005e+00,\n",
       "            1.6672e+00,  1.6561e+00,  1.6227e+00,  1.6561e+00,  1.6449e+00,\n",
       "            1.5894e+00,  1.6672e+00,  1.7338e+00,  1.5783e+00,  1.6116e+00,\n",
       "            2.0227e+00,  4.5215e-02, -8.1020e-01],\n",
       "          [-8.1020e-01, -7.7687e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -1.2142e-01,\n",
       "            8.0064e-01,  1.4561e+00,  1.7227e+00,  1.4894e+00,  1.5561e+00,\n",
       "            1.6449e+00,  1.6116e+00,  1.5005e+00,  1.5339e+00,  1.6116e+00,\n",
       "            1.6783e+00,  1.6672e+00,  1.6227e+00,  1.5783e+00,  1.6783e+00,\n",
       "            1.9005e+00,  9.5617e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -6.1023e-01,\n",
       "           -3.2139e-01,  1.0076e-01,  3.7849e-01,  1.2895e+00,  1.7227e+00,\n",
       "            1.6338e+00,  1.6561e+00,  1.6005e+00,  1.7005e+00,  1.4117e+00,\n",
       "            1.4672e+00,  1.5339e+00,  1.7449e+00,  1.6783e+00,  1.7894e+00,\n",
       "            1.1450e+00,  1.2783e+00,  1.9671e+00,  1.9449e+00,  1.7783e+00,\n",
       "            1.8338e+00,  1.5783e+00, -8.1020e-01],\n",
       "          [-8.1020e-01, -1.7697e-01,  1.2672e+00,  1.5005e+00,  1.6783e+00,\n",
       "            1.6449e+00,  1.6783e+00,  1.5005e+00,  1.4561e+00,  1.5672e+00,\n",
       "            1.5005e+00,  1.5116e+00,  1.4117e+00,  9.5617e-01,  1.9116e+00,\n",
       "            1.3339e+00,  1.4783e+00,  1.6672e+00,  2.0227e+00,  2.0227e+00,\n",
       "            1.6449e+00,  1.7894e+00,  1.6449e+00,  1.5339e+00,  1.6338e+00,\n",
       "            1.7671e+00,  1.9227e+00, -8.1020e-01],\n",
       "          [-7.7687e-01,  1.4339e+00,  1.7227e+00,  1.6783e+00,  1.6449e+00,\n",
       "            1.5339e+00,  1.5339e+00,  1.5672e+00,  1.4672e+00,  1.4672e+00,\n",
       "            1.4672e+00,  1.6338e+00,  1.8560e+00,  7.8542e-02,  8.5619e-01,\n",
       "            2.0227e+00,  1.7338e+00,  1.6449e+00,  1.2783e+00,  9.0063e-01,\n",
       "            1.3117e+00,  1.5227e+00,  1.4561e+00,  1.5116e+00,  1.6561e+00,\n",
       "            1.7227e+00,  1.6894e+00, -8.1020e-01],\n",
       "          [ 2.7851e-01,  1.7783e+00,  1.3894e+00,  1.5227e+00,  1.6561e+00,\n",
       "            1.7338e+00,  1.7338e+00,  1.7894e+00,  1.9560e+00,  1.6338e+00,\n",
       "            1.3450e+00,  1.5783e+00,  1.6005e+00,  1.8671e+00, -8.8096e-02,\n",
       "            7.7765e-04,  3.6738e-01,  4.8959e-01,  1.0562e+00,  1.6227e+00,\n",
       "            1.6449e+00,  1.5783e+00,  1.6005e+00,  1.6672e+00,  1.6672e+00,\n",
       "            1.6783e+00,  1.7338e+00, -4.8803e-01],\n",
       "          [ 2.2996e-02,  1.4561e+00,  1.5450e+00,  1.4561e+00,  1.3339e+00,\n",
       "            1.4672e+00,  1.5339e+00,  1.6894e+00,  1.5894e+00,  1.2450e+00,\n",
       "            1.3783e+00,  1.4783e+00,  1.3894e+00,  1.5561e+00,  1.8560e+00,\n",
       "            1.3561e+00,  1.7116e+00,  1.9116e+00,  1.8449e+00,  1.6672e+00,\n",
       "            1.6116e+00,  1.5450e+00,  1.5116e+00,  1.6561e+00,  1.6338e+00,\n",
       "            1.6449e+00,  1.7449e+00, -6.5878e-02],\n",
       "          [-2.7695e-01,  1.4450e+00,  1.2228e+00,  1.3450e+00,  1.5561e+00,\n",
       "            1.3783e+00,  1.2450e+00,  1.3006e+00,  1.3450e+00,  1.3228e+00,\n",
       "            1.4339e+00,  1.5672e+00,  1.6227e+00,  1.6449e+00,  1.6338e+00,\n",
       "            1.8116e+00,  1.6894e+00,  1.5894e+00,  1.4005e+00,  1.4783e+00,\n",
       "            1.2561e+00,  1.2006e+00,  1.1561e+00,  1.1006e+00,  1.2006e+00,\n",
       "            1.4672e+00,  1.4783e+00,  4.6737e-01],\n",
       "          [-8.1020e-01,  5.4513e-01,  1.6227e+00,  1.3339e+00,  1.1784e+00,\n",
       "            1.0895e+00,  1.2228e+00,  1.3672e+00,  1.4561e+00,  1.5227e+00,\n",
       "            1.5561e+00,  1.4894e+00,  1.5339e+00,  1.5227e+00,  1.4117e+00,\n",
       "            1.3672e+00,  1.3450e+00,  1.3117e+00,  1.3561e+00,  1.3117e+00,\n",
       "            1.3894e+00,  1.3228e+00,  1.1450e+00,  9.2285e-01,  1.0450e+00,\n",
       "            1.1561e+00,  1.5227e+00,  2.1185e-01],\n",
       "          [-8.1020e-01, -8.1020e-01,  1.1887e-02,  1.2895e+00,  1.5450e+00,\n",
       "            1.3117e+00,  1.1339e+00,  1.1006e+00,  1.1339e+00,  1.2006e+00,\n",
       "            1.2450e+00,  1.2783e+00,  1.2895e+00,  1.2783e+00,  1.3339e+00,\n",
       "            1.3894e+00,  1.4561e+00,  1.5116e+00,  1.5227e+00,  1.5227e+00,\n",
       "            1.5339e+00,  1.2783e+00,  1.2783e+00,  1.3450e+00,  1.3228e+00,\n",
       "            1.5894e+00,  1.0784e+00, -8.1020e-01],\n",
       "          [-7.8798e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -7.6987e-02,\n",
       "            1.4117e+00,  1.6561e+00,  1.8227e+00,  1.8449e+00,  1.8782e+00,\n",
       "            1.9227e+00,  1.8894e+00,  1.9005e+00,  1.6449e+00,  1.6338e+00,\n",
       "            1.3339e+00,  1.3117e+00,  1.1784e+00,  1.2117e+00,  1.2117e+00,\n",
       "            1.2006e+00,  1.1450e+00,  1.0339e+00,  1.0562e+00,  2.8962e-01,\n",
       "           -1.6586e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -3.6583e-01, -1.3253e-01, -3.2139e-01,\n",
       "           -1.0332e-02, -3.5472e-01, -4.2137e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01],\n",
       "          [-8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01, -8.1020e-01,\n",
       "           -8.1020e-01, -8.1020e-01, -8.1020e-01]]]),\n",
       " 9)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#查看归一化后的效果\n",
    "train_dataset[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.454285Z",
     "start_time": "2025-06-26T01:43:32.450871Z"
    }
   },
   "outputs": [],
   "source": [
    "#如果标准化后，就不在执行该代码\n",
    "\n",
    "def calculate_mean_std(train_dataset):\n",
    "    # 首先将所有图像数据堆叠为一个大张量\n",
    "    all_images = torch.stack([img_tensor for img_tensor, _ in train_dataset])\n",
    "    print(all_images.shape)\n",
    "    # 计算通道维度上的均值和标准差\n",
    "    # Fashion MNIST是灰度图像，只有一个通道\n",
    "    # 对所有像素值计算均值和标准差\n",
    "    mean = torch.mean(all_images)\n",
    "    std = torch.std(all_images)\n",
    "\n",
    "    print(f\"训练数据集均值: {mean.item():.4f}\")\n",
    "    print(f\"训练数据集标准差: {std.item():.4f}\")\n",
    "\n",
    "    # 检查数据集大小\n",
    "    print(f\"数据集中图像总数: {len(train_dataset)}\")\n",
    "\n",
    "# calculate_mean_std(train_dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.458292Z",
     "start_time": "2025-06-26T01:43:32.454285Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 28, 28])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_dataset[0][0].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.847437Z",
     "start_time": "2025-06-26T01:43:32.458799Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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3/3ud+/ZgUsrkEb//vSnP71Rf/7yl7/cs6O3ffv2YtWqVY2alg7A/fKXv2x8f8uWLY2FAX19fY1mU/ozzffSz1jVBDwUahQwHvbp3vWudxWf//znG/9+5zvf2ag/6WvmzJnFjBkzGl87H2g78cQTi6lTpza+P23atKK9vb34+c9/3vheanpPmTKlsT+3s1tvvbW48sorG3Uu9bXuvvvuYs2aNY1FU6OXv0w9qebm5kaj3dkvk4fm9ziX3vypYZMmHkn6e/p64hOfuMvGTLkfzMrs1DDPNeU/8pGPFGeeeeYD/jlgcvre977XaGJv3Lix2H///Ru14pJLLmkcREsToFQ/Rr/S5OirX/1qsc8++xT77rtvY+LzL//yL8X69euLxz3uccWFF17YyJniRp177rmNRrmJD/BgpAbQBz7wgeKlL31poyH0/Oc/v7GTli63tNdeexW/+93vGvUn/XvOnDmNP1Nj6fvf/35jxyz9meZcK1asaJzB8rznPa844ogjGo2n173udcWRRx5ZnH/++bv7YQITlBoFjAdLliwpvvOd7xQ//OEPG/9+3/ve12hCb926teju7m4cYEsH39IZKaNSozvFpO9v27atcbAtNbvf8pa3FO9///sbB95SEz19nXPOOY2fueWWW4qf/vSnjQVOqX6lf6fGd/o66qijisc//vHFn/70p+IFL3hBo36lfUcmh5bdvQH8bemIe/pKR7qSNFnZ1dIpbukIXNlSQfuf//mf4m1ve1vpuYFqetazntWYmCTp6HyqT0lqfD/60Y8urrjiinti0+VMOjo6Gn9PO3fpKzXF045fmlillQadnZ33xKdGeqpL6YaaLoECPBip5qSdq2OOOaZxdt3FF18c+rnUbPrEJz7R+Pm0eumxj31s4wyV9DVaz9I9DNLBOYAHS40CxoO0H5fuz/TNb36zce+ldDAt7dftvHI7HaBLB93SPl6qMfcn9anS/l1qlKfalP6eFkmlRZb/+q//Wvzd3/1d8chHPrKx6CnVrzTGU57ylOKZz3xm4ytJB/BS03u//fYbs8fP7qf5XVHpaFdaYX3HHXc0isyXv/zle725P/OZzzSOkCVpYpOO4u/cEPr7v//7xs/uLF0uJf3/pk2big9/+MONn0uny6XTUUav+ZauGze6mjJdX2ln/+///b/ijW984z3/zv1cWu2eHsOdd97Z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",
      "text/plain": [
       "<Figure size 1500x900 with 15 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 导入matplotlib用于绘图\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "# 设置中文字体，解决中文显示问题\n",
    "matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体\n",
    "matplotlib.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题\n",
    "\n",
    "# 创建一个3行5列的图表来显示前15个样本\n",
    "plt.figure(figsize=(15, 9))  # 设置图表大小\n",
    "\n",
    "# 遍历前15个样本\n",
    "for i in range(15):\n",
    "    # 创建子图\n",
    "    plt.subplot(3, 5, i + 1)\n",
    "    \n",
    "    # 显示图像\n",
    "    plt.imshow(train_images[i], cmap='gray')\n",
    "    \n",
    "    # 添加标题（显示类别名称）\n",
    "    plt.title(class_names[train_labels[i]], fontsize=10)\n",
    "    \n",
    "    # 关闭坐标轴\n",
    "    plt.axis('off')\n",
    "\n",
    "# 调整子图之间的间距\n",
    "plt.tight_layout()\n",
    "\n",
    "# 显示图表\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:32.852963Z",
     "start_time": "2025-06-26T01:43:32.847437Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([28, 28])"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_dataset[0][0].squeeze().shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.135368Z",
     "start_time": "2025-06-26T01:43:32.853470Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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3/3ud+/ZgUsrkEb//vSnP71Rf/7yl7/cs6O3ffv2YtWqVY2alg7A/fKXv2x8f8uWLY2FAX19fY1mU/ozzffSz1jVBDwUahQwHvbp3vWudxWf//znG/9+5zvf2ag/6WvmzJnFjBkzGl87H2g78cQTi6lTpza+P23atKK9vb34+c9/3vheanpPmTKlsT+3s1tvvbW48sorG3Uu9bXuvvvuYs2aNY1FU6OXv0w9qebm5kaj3dkvk4fm9ziX3vypYZMmHkn6e/p64hOfuMvGTLkfzMrs1DDPNeU/8pGPFGeeeeYD/jlgcvre977XaGJv3Lix2H///Ru14pJLLmkcREsToFQ/Rr/S5OirX/1qsc8++xT77rtvY+LzL//yL8X69euLxz3uccWFF17YyJniRp177rmNRrmJD/BgpAbQBz7wgeKlL31poyH0/Oc/v7GTli63tNdeexW/+93vGvUn/XvOnDmNP1Nj6fvf/35jxyz9meZcK1asaJzB8rznPa844ogjGo2n173udcWRRx5ZnH/++bv7YQITlBoFjAdLliwpvvOd7xQ//OEPG/9+3/ve12hCb926teju7m4cYEsH39IZKaNSozvFpO9v27atcbAtNbvf8pa3FO9///sbB95SEz19nXPOOY2fueWWW4qf/vSnjQVOqX6lf6fGd/o66qijisc//vHFn/70p+IFL3hBo36lfUcmh5bdvQH8bemIe/pKR7qSNFnZ1dIpbukIXNlSQfuf//mf4m1ve1vpuYFqetazntWYmCTp6HyqT0lqfD/60Y8urrjiinti0+VMOjo6Gn9PO3fpKzXF045fmlillQadnZ33xKdGeqpL6YaaLoECPBip5qSdq2OOOaZxdt3FF18c+rnUbPrEJz7R+Pm0eumxj31s4wyV9DVaz9I9DNLBOYAHS40CxoO0H5fuz/TNb36zce+ldDAt7dftvHI7HaBLB93SPl6qMfcn9anS/l1qlKfalP6eFkmlRZb/+q//Wvzd3/1d8chHPrKx6CnVrzTGU57ylOKZz3xm4ytJB/BS03u//fYbs8fP7qf5XVHpaFdaYX3HHXc0isyXv/zle725P/OZzzSOkCVpYpOO4u/cEPr7v//7xs/uLF0uJf3/pk2big9/+MONn0uny6XTUUav+ZauGze6mjJdX2ln/+///b/ijW984z3/zv1cWu2eHsOdd97Z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",
      "text/plain": [
       "<Figure size 1500x900 with 15 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建一个3行5列的图表来显示train_dataset中的前15个样本\n",
    "plt.figure(figsize=(15, 9))  # 设置图表大小\n",
    "\n",
    "# 遍历前15个样本\n",
    "for i in range(15):\n",
    "    # 获取数据和标签\n",
    "    img, label = train_dataset[i]\n",
    "    \n",
    "    # 创建子图\n",
    "    plt.subplot(3, 5, i + 1)\n",
    "    \n",
    "    # 将张量转换为numpy数组并显示图像,squeeze()是用来去掉张量中维度为1的维度\n",
    "    plt.imshow(img.squeeze().numpy(), cmap='gray')\n",
    "    \n",
    "    # 添加标题（显示类别名称）\n",
    "    plt.title(class_names[label], fontsize=10)\n",
    "    \n",
    "    # 关闭坐标轴\n",
    "    plt.axis('off')\n",
    "\n",
    "# 调整子图之间的间距\n",
    "plt.tight_layout()\n",
    "\n",
    "# 显示图表\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 把数据集划分为训练集55000和验证集5000，并给DataLoader"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.144223Z",
     "start_time": "2025-06-26T01:43:33.135368Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集大小: 55000\n",
      "验证集大小: 5000\n",
      "测试集大小: 10000\n",
      "批次大小: 64\n",
      "训练批次数: 860\n"
     ]
    }
   ],
   "source": [
    "# 从训练集中划分出验证集\n",
    "train_size = 55000\n",
    "val_size = 5000\n",
    "# 设置随机种子以确保每次得到相同的随机划分结果\n",
    "generator = torch.Generator().manual_seed(42)\n",
    "train_subset, val_subset = torch.utils.data.random_split(\n",
    "    train_dataset, \n",
    "    [train_size, val_size],\n",
    "    generator=generator #设置随机种子，确保每次得到相同的随机划分结果\n",
    ")\n",
    "\n",
    "# 创建数据加载器\n",
    "batch_size = 64\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "    train_subset,\n",
    "    batch_size=batch_size,\n",
    "    shuffle=True #打乱数据集，每次迭代时，数据集的顺序都会被打乱\n",
    ")\n",
    "\n",
    "val_loader = torch.utils.data.DataLoader(\n",
    "    val_subset,\n",
    "    batch_size=batch_size,\n",
    "    shuffle=False\n",
    ")\n",
    "\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "    test_dataset,\n",
    "    batch_size=batch_size,\n",
    "    shuffle=False\n",
    ")\n",
    "\n",
    "# 打印数据集大小信息\n",
    "print(f\"训练集大小: {len(train_subset)}\")\n",
    "print(f\"验证集大小: {len(val_subset)}\")\n",
    "print(f\"测试集大小: {len(test_dataset)}\")\n",
    "print(f\"批次大小: {batch_size}\")\n",
    "print(f\"训练批次数: {len(train_loader)}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.148120Z",
     "start_time": "2025-06-26T01:43:33.145230Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "55040"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "64*860"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 搭建模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.152657Z",
     "start_time": "2025-06-26T01:43:33.148120Z"
    }
   },
   "outputs": [],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self, layers_num=2):\n",
    "        super().__init__()\n",
    "        self.flatten = nn.Flatten()\n",
    "        # 多加几层\n",
    "        self.linear_relu_stack = nn.Sequential(\n",
    "            nn.Linear(28 * 28, 100),\n",
    "            nn.ReLU(),\n",
    "        )\n",
    "        # 加19层\n",
    "        for i in range(1, layers_num):\n",
    "            self.linear_relu_stack.add_module(f\"Linear_{i}\", nn.Linear(100, 100))\n",
    "            self.linear_relu_stack.add_module(f\"relu\", nn.ReLU())\n",
    "        # 输出层\n",
    "        self.linear_relu_stack.add_module(\"Output Layer\", nn.Linear(100, 10))\n",
    "        \n",
    "        # 初始化权重\n",
    "        # self.init_weights()\n",
    "        \n",
    "    def init_weights(self):\n",
    "        \"\"\"使用 xavier 均匀分布来初始化全连接层的权重 W\"\"\"\n",
    "        # print('''初始化权重''')\n",
    "        for m in self.modules():\n",
    "            # print(m)\n",
    "            # print('-'*50)\n",
    "            if isinstance(m, nn.Linear):#判断m是否为全连接层\n",
    "                # https://pytorch.org/docs/stable/nn.init.html\n",
    "                nn.init.xavier_uniform_(m.weight) # xavier 均匀分布初始化权重\n",
    "                nn.init.zeros_(m.bias) # 全零初始化偏置项\n",
    "        # print('''初始化权重完成''')\n",
    "    def forward(self, x):\n",
    "        # x.shape [batch size, 1, 28, 28]\n",
    "        x = self.flatten(x)  \n",
    "        # 展平后 x.shape [batch size, 28 * 28]\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        # logits.shape [batch size, 10]\n",
    "        return logits\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.185031Z",
     "start_time": "2025-06-26T01:43:33.152657Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "批次图像形状: torch.Size([64, 1, 28, 28])\n",
      "批次标签形状: torch.Size([64])\n",
      "----------------------------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "# 实例化模型\n",
    "model = NeuralNetwork(layers_num=19)\n",
    "\n",
    "# 从train_loader获取第一个批次的数据\n",
    "dataiter = iter(train_loader)\n",
    "images, labels = next(dataiter)\n",
    "\n",
    "# 查看批次数据的形状\n",
    "print(\"批次图像形状:\", images.shape)\n",
    "print(\"批次标签形状:\", labels.shape)\n",
    "\n",
    "\n",
    "print('-'*100)\n",
    "# 进行前向传播\n",
    "with torch.no_grad():  # 不需要计算梯度\n",
    "    outputs = model(images)\n",
    "    \n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.199532Z",
     "start_time": "2025-06-26T01:43:33.185031Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "批次图像形状: torch.Size([64, 1, 28, 28])\n",
      "批次标签形状: torch.Size([64])\n",
      "测试图像形状: torch.Size([1, 1, 28, 28])\n",
      "----------------------------------------------------------------------------------------------------\n",
      "模型预测结果: 5\n",
      "实际标签: 6\n"
     ]
    }
   ],
   "source": [
    "# 实例化模型\n",
    "model = NeuralNetwork()\n",
    "\n",
    "# 从train_loader获取第一个批次的数据\n",
    "dataiter = iter(train_loader)\n",
    "images, labels = next(dataiter)\n",
    "\n",
    "# 查看批次数据的形状\n",
    "print(\"批次图像形状:\", images.shape)\n",
    "print(\"批次标签形状:\", labels.shape)\n",
    "\n",
    "# # 选择第一张图像进行前向传播测试,unsqueeze(0)是添加批次维度\n",
    "test_image = images[0].unsqueeze(0)  # 添加批次维度\n",
    "print(\"测试图像形状:\", test_image.shape)\n",
    "\n",
    "print('-'*100)\n",
    "# 进行前向传播\n",
    "with torch.no_grad():  # 不需要计算梯度\n",
    "    outputs = model(test_image)\n",
    "    \n",
    "# 获取预测结果\n",
    "_, predicted = torch.max(outputs, 1)\n",
    "print(\"模型预测结果:\", predicted.item())\n",
    "print(\"实际标签:\", labels[0].item())\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.203053Z",
     "start_time": "2025-06-26T01:43:33.199532Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型总参数量: 89610\n",
      "\n",
      "各层参数量明细:\n",
      "linear_relu_stack.0.weight: 78400 参数\n",
      "linear_relu_stack.0.bias: 100 参数\n",
      "linear_relu_stack.Linear_1.weight: 10000 参数\n",
      "linear_relu_stack.Linear_1.bias: 100 参数\n",
      "linear_relu_stack.Output Layer.weight: 1000 参数\n",
      "linear_relu_stack.Output Layer.bias: 10 参数\n"
     ]
    }
   ],
   "source": [
    "# 计算模型的总参数量\n",
    "total_params = sum(p.numel() for p in model.parameters())\n",
    "print(f\"模型总参数量: {total_params}\")\n",
    "\n",
    "# 查看每层参数量明细\n",
    "print(\"\\n各层参数量明细:\")\n",
    "for name, param in model.named_parameters():\n",
    "    print(f\"{name}: {param.numel()} 参数\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:33.217395Z",
     "start_time": "2025-06-26T01:43:33.203561Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('linear_relu_stack.0.weight',\n",
       "              tensor([[ 0.0218, -0.0025, -0.0349,  ..., -0.0037, -0.0004,  0.0057],\n",
       "                      [ 0.0038, -0.0270, -0.0291,  ..., -0.0109,  0.0023, -0.0289],\n",
       "                      [ 0.0309,  0.0162,  0.0292,  ...,  0.0235, -0.0081, -0.0340],\n",
       "                      ...,\n",
       "                      [-0.0317,  0.0272, -0.0192,  ...,  0.0178, -0.0207,  0.0224],\n",
       "                      [ 0.0161,  0.0308, -0.0245,  ...,  0.0214, -0.0034, -0.0102],\n",
       "                      [ 0.0290,  0.0014, -0.0040,  ..., -0.0311, -0.0263, -0.0249]])),\n",
       "             ('linear_relu_stack.0.bias',\n",
       "              tensor([-0.0050,  0.0009, -0.0272, -0.0273,  0.0101, -0.0009,  0.0014,  0.0213,\n",
       "                       0.0062, -0.0064,  0.0123, -0.0281, -0.0120, -0.0089,  0.0090, -0.0159,\n",
       "                      -0.0151,  0.0044,  0.0257,  0.0098, -0.0144, -0.0162, -0.0044, -0.0289,\n",
       "                       0.0092, -0.0160, -0.0283,  0.0310, -0.0157,  0.0143, -0.0189,  0.0018,\n",
       "                       0.0218,  0.0060,  0.0093,  0.0236, -0.0210,  0.0222,  0.0218,  0.0276,\n",
       "                      -0.0189,  0.0248,  0.0250, -0.0325,  0.0263,  0.0162, -0.0002,  0.0277,\n",
       "                       0.0309, -0.0233, -0.0114,  0.0113,  0.0186, -0.0340,  0.0112, -0.0270,\n",
       "                      -0.0038, -0.0174, -0.0094, -0.0296, -0.0256, -0.0229,  0.0136, -0.0299,\n",
       "                       0.0289,  0.0327,  0.0353, -0.0214,  0.0023, -0.0177,  0.0083, -0.0109,\n",
       "                      -0.0150, -0.0026, -0.0104, -0.0013, -0.0107,  0.0049, -0.0207,  0.0244,\n",
       "                       0.0136, -0.0348,  0.0158,  0.0002,  0.0008, -0.0111,  0.0078, -0.0052,\n",
       "                      -0.0113,  0.0244, -0.0294, -0.0142,  0.0101,  0.0340, -0.0107,  0.0068,\n",
       "                      -0.0276,  0.0221, -0.0311,  0.0319])),\n",
       "             ('linear_relu_stack.Linear_1.weight',\n",
       "              tensor([[ 0.0343,  0.0970,  0.0157,  ..., -0.0710, -0.0987, -0.0718],\n",
       "                      [-0.0440,  0.0419,  0.0346,  ..., -0.0495, -0.0487,  0.0527],\n",
       "                      [ 0.0018,  0.0789,  0.0752,  ..., -0.0719, -0.0315, -0.0633],\n",
       "                      ...,\n",
       "                      [-0.0321,  0.0315,  0.0198,  ...,  0.0732,  0.0239, -0.0817],\n",
       "                      [ 0.0748, -0.0908,  0.0454,  ..., -0.0107,  0.0111, -0.0274],\n",
       "                      [-0.0095, -0.0018,  0.0433,  ..., -0.0603, -0.0017,  0.0789]])),\n",
       "             ('linear_relu_stack.Linear_1.bias',\n",
       "              tensor([ 0.0075,  0.0606,  0.0734,  0.0068,  0.0268, -0.0248,  0.0284, -0.0365,\n",
       "                       0.0430,  0.0792, -0.0123,  0.0621, -0.0390, -0.0174, -0.0936, -0.0198,\n",
       "                      -0.0846, -0.0553, -0.0765, -0.0087,  0.0790,  0.0965,  0.0491, -0.0702,\n",
       "                       0.0977, -0.0389,  0.0600, -0.0178, -0.0757,  0.0769, -0.0747, -0.0045,\n",
       "                      -0.0373,  0.0718, -0.0825,  0.0109,  0.0039, -0.0754, -0.0158, -0.0018,\n",
       "                      -0.0222, -0.0148, -0.0645,  0.0281,  0.0935, -0.0120,  0.0792,  0.0996,\n",
       "                      -0.0083, -0.0192, -0.0034, -0.0735,  0.0377, -0.0463,  0.0074, -0.0158,\n",
       "                      -0.0528, -0.0345, -0.0659,  0.0574, -0.0856, -0.0924,  0.0347,  0.0439,\n",
       "                      -0.0017, -0.0202, -0.0899, -0.0707,  0.0588,  0.0771,  0.0778, -0.0759,\n",
       "                       0.0354, -0.0190, -0.0661, -0.0339,  0.0007,  0.0200, -0.0732, -0.0541,\n",
       "                       0.0211,  0.0719,  0.0401, -0.0902,  0.0099, -0.0887, -0.0766,  0.0756,\n",
       "                      -0.0914,  0.0672,  0.0853,  0.0676, -0.0454,  0.0414, -0.0479,  0.0274,\n",
       "                       0.0356,  0.0069,  0.0546, -0.0607])),\n",
       "             ('linear_relu_stack.Output Layer.weight',\n",
       "              tensor([[-0.0683,  0.0773, -0.0739, -0.0468,  0.0295, -0.0060, -0.0191,  0.0920,\n",
       "                        0.0356, -0.0078,  0.0023,  0.0057, -0.0227, -0.0953, -0.0183,  0.0233,\n",
       "                        0.0182, -0.0431, -0.0273, -0.0555,  0.0501, -0.0701, -0.0963, -0.0575,\n",
       "                       -0.0170,  0.0014,  0.0927,  0.0416,  0.0958,  0.0066, -0.0131,  0.0448,\n",
       "                        0.0585,  0.0179, -0.0517,  0.0128, -0.0799, -0.0937, -0.0081,  0.0164,\n",
       "                        0.0345,  0.0883, -0.0678,  0.0716, -0.0603, -0.0055, -0.0632,  0.0241,\n",
       "                        0.0923,  0.0259,  0.0267, -0.0207,  0.0812,  0.0885,  0.0583, -0.0740,\n",
       "                        0.0806,  0.0426, -0.0514,  0.0077,  0.0655, -0.0334,  0.0405,  0.0406,\n",
       "                        0.0110,  0.0486, -0.0796, -0.0870, -0.0309, -0.0476, -0.0337,  0.0395,\n",
       "                        0.0730, -0.0068,  0.0930, -0.0409, -0.0133,  0.0915,  0.0755,  0.0234,\n",
       "                       -0.0661, -0.0119, -0.0724,  0.0073,  0.0713, -0.0459, -0.0373,  0.0563,\n",
       "                       -0.0155, -0.0220, -0.0988, -0.0446, -0.0551,  0.0882, -0.0576,  0.0499,\n",
       "                        0.0253, -0.0272, -0.0155, -0.0457],\n",
       "                      [-0.0179,  0.0619,  0.0250,  0.0843, -0.0333, -0.0999, -0.0968,  0.0359,\n",
       "                       -0.0268,  0.0878, -0.0150, -0.0009, -0.0245,  0.0026, -0.0720, -0.0703,\n",
       "                        0.0360,  0.0917,  0.0885, -0.0479, -0.0674,  0.0531, -0.0369,  0.0183,\n",
       "                        0.0726, -0.0620, -0.0979,  0.0176, -0.0336,  0.0115, -0.0370, -0.0850,\n",
       "                       -0.0876,  0.0210, -0.0466, -0.0156,  0.0159, -0.0853,  0.0898,  0.0881,\n",
       "                        0.0305,  0.0036, -0.0605, -0.0399, -0.0394, -0.0746, -0.0543, -0.0579,\n",
       "                        0.0500,  0.0871,  0.0116, -0.0766, -0.0245, -0.0535, -0.0292,  0.0898,\n",
       "                        0.0157,  0.0067,  0.0046, -0.0949, -0.0077, -0.0338,  0.0491, -0.0925,\n",
       "                        0.0675,  0.0867, -0.0138,  0.0894,  0.0838,  0.0539,  0.0279,  0.0608,\n",
       "                       -0.0035,  0.0828,  0.0316,  0.0883,  0.0942, -0.0244, -0.0712, -0.0810,\n",
       "                        0.0825,  0.0537, -0.0349, -0.0456, -0.0747, -0.0848,  0.0807, -0.0788,\n",
       "                        0.0835,  0.0239,  0.0103,  0.0108,  0.0002, -0.0895,  0.0364, -0.0185,\n",
       "                       -0.0811, -0.0346,  0.0677, -0.0807],\n",
       "                      [ 0.0034,  0.0832, -0.0537,  0.0367,  0.0361,  0.0687,  0.0201, -0.0250,\n",
       "                       -0.0791,  0.0802,  0.0595, -0.0822, -0.0321, -0.0388,  0.0846, -0.0277,\n",
       "                        0.0724, -0.0620,  0.0387,  0.0096,  0.0203, -0.0445,  0.0836, -0.0718,\n",
       "                        0.0861, -0.0387,  0.0442, -0.0346, -0.0032,  0.0247, -0.0769, -0.0006,\n",
       "                       -0.0844,  0.0297,  0.0359,  0.0870,  0.0617,  0.0859, -0.0880, -0.0138,\n",
       "                       -0.0331, -0.0431,  0.0053,  0.0530,  0.0596,  0.0074, -0.0760,  0.0210,\n",
       "                        0.0895, -0.0359, -0.0630,  0.0294,  0.0833,  0.0551, -0.0254, -0.0220,\n",
       "                        0.0047, -0.0328, -0.0269,  0.0573, -0.0317,  0.0846, -0.0198, -0.0255,\n",
       "                        0.0971,  0.0989,  0.0175, -0.0570,  0.0456,  0.0514,  0.0114, -0.0141,\n",
       "                        0.0399,  0.0698, -0.0195, -0.0216, -0.0789,  0.0106, -0.0192, -0.0432,\n",
       "                        0.0943, -0.0200,  0.0727, -0.0518, -0.0621, -0.0575, -0.0272, -0.0043,\n",
       "                        0.0394, -0.0638,  0.0994,  0.0495, -0.0342,  0.0390,  0.0066,  0.0358,\n",
       "                        0.0996,  0.0996,  0.0079,  0.0883],\n",
       "                      [ 0.0821, -0.0004,  0.0737,  0.0400,  0.0009,  0.0753, -0.0045,  0.0652,\n",
       "                       -0.0127, -0.0620, -0.0356,  0.0363, -0.0154,  0.0283,  0.0506, -0.0591,\n",
       "                       -0.0304,  0.0182,  0.0523, -0.0604,  0.0077, -0.0199,  0.0483, -0.0203,\n",
       "                       -0.0054,  0.0410,  0.0264,  0.0536,  0.0043,  0.0005,  0.0106, -0.0926,\n",
       "                       -0.0977, -0.0554,  0.0430,  0.0493,  0.0958, -0.0121,  0.0405,  0.0322,\n",
       "                        0.0460, -0.0884,  0.0748, -0.0603,  0.0773,  0.0846,  0.0181, -0.0825,\n",
       "                        0.0714, -0.0694, -0.0627,  0.0497,  0.0518, -0.0347, -0.0216, -0.0938,\n",
       "                       -0.0099, -0.0291,  0.0346, -0.0813,  0.0592, -0.0708,  0.0145, -0.0427,\n",
       "                        0.0111, -0.0543, -0.0917, -0.0229,  0.0249, -0.0358, -0.0776,  0.0367,\n",
       "                        0.0964,  0.0830,  0.0483,  0.0869, -0.0029, -0.0028,  0.0251,  0.0012,\n",
       "                        0.0117,  0.0370, -0.0842, -0.0973,  0.0917, -0.0206,  0.0859, -0.0821,\n",
       "                        0.0449,  0.0441,  0.0261,  0.0848, -0.0865, -0.0638,  0.0830, -0.0588,\n",
       "                        0.0911,  0.0172,  0.0745, -0.0037],\n",
       "                      [-0.0689,  0.0835, -0.1000,  0.0733, -0.0895,  0.0693, -0.0755,  0.0153,\n",
       "                        0.0235, -0.0498, -0.0696, -0.0736, -0.0841, -0.0049,  0.0912, -0.0491,\n",
       "                       -0.0537,  0.0565, -0.0453,  0.0757, -0.0779, -0.0149,  0.0576,  0.0017,\n",
       "                       -0.0736, -0.0629, -0.0015,  0.0773,  0.0112, -0.0815,  0.0744,  0.0496,\n",
       "                        0.0134,  0.0532,  0.0911,  0.0546,  0.0396, -0.0715,  0.0591, -0.0145,\n",
       "                        0.0113, -0.0827, -0.0429,  0.0705, -0.0929,  0.0289,  0.0350, -0.0784,\n",
       "                       -0.0734,  0.0706,  0.0235,  0.0284, -0.0769,  0.0106, -0.0861,  0.0826,\n",
       "                        0.0316, -0.0279,  0.0765,  0.0672,  0.0081,  0.0287, -0.0445, -0.0886,\n",
       "                       -0.0210,  0.0664,  0.0078,  0.0420, -0.0328,  0.0989, -0.0314, -0.0712,\n",
       "                        0.0303,  0.0580, -0.0903,  0.0172, -0.0098, -0.0356,  0.0500,  0.0508,\n",
       "                        0.0857,  0.0388, -0.0037, -0.0507, -0.0038,  0.0965,  0.0882,  0.0783,\n",
       "                       -0.0748, -0.0333, -0.0510,  0.0498, -0.0423,  0.0557,  0.0442,  0.0723,\n",
       "                        0.0275, -0.0438, -0.0319,  0.0319],\n",
       "                      [ 0.0804,  0.0130,  0.0788, -0.0568,  0.0760, -0.0416, -0.0799,  0.0070,\n",
       "                        0.0272, -0.0279,  0.0028,  0.0376,  0.0182,  0.0274, -0.0784,  0.0679,\n",
       "                       -0.0146, -0.0501, -0.0857, -0.0623,  0.0643,  0.0977,  0.0917, -0.0429,\n",
       "                        0.0827, -0.0455, -0.0700,  0.0226,  0.0723, -0.0712, -0.0631, -0.0387,\n",
       "                       -0.0501,  0.0654,  0.0586, -0.0607, -0.0313,  0.0842, -0.0044, -0.0963,\n",
       "                        0.0391, -0.0796, -0.0641,  0.0747, -0.0040, -0.0131, -0.0381, -0.0402,\n",
       "                        0.0466, -0.0176, -0.0037,  0.0797, -0.0068, -0.0953, -0.0234, -0.0252,\n",
       "                        0.0292, -0.0962,  0.0230, -0.0135, -0.0218, -0.0344,  0.0422, -0.0916,\n",
       "                        0.0492,  0.0357,  0.0525,  0.0387,  0.0456, -0.0966, -0.0653,  0.0746,\n",
       "                        0.0895,  0.0935,  0.0015,  0.0295,  0.0972,  0.0791,  0.0437, -0.0470,\n",
       "                        0.0475, -0.0013,  0.0754, -0.0073,  0.0476,  0.0796,  0.0769,  0.0328,\n",
       "                       -0.0533,  0.0937, -0.0035,  0.0182,  0.0960, -0.0181,  0.0809, -0.0140,\n",
       "                       -0.0966,  0.0160,  0.0179,  0.0628],\n",
       "                      [ 0.0931, -0.0513, -0.0528,  0.0973, -0.0207,  0.0800,  0.0003,  0.0273,\n",
       "                        0.0633,  0.0233, -0.0282,  0.0169, -0.0561, -0.0234,  0.0067,  0.0613,\n",
       "                       -0.0438,  0.0045,  0.0256,  0.0273,  0.0163,  0.0799,  0.0592, -0.0072,\n",
       "                       -0.0192, -0.0508,  0.0124,  0.0920,  0.0209,  0.0270, -0.0916, -0.0042,\n",
       "                        0.0777, -0.0864, -0.0269, -0.0483, -0.0571,  0.0973,  0.0663,  0.0334,\n",
       "                        0.0237,  0.0348,  0.0781, -0.0894, -0.0451,  0.0299, -0.0827, -0.0448,\n",
       "                        0.0466, -0.0504,  0.0841,  0.0296, -0.0500,  0.0209,  0.0998,  0.0295,\n",
       "                        0.0685,  0.0845, -0.0484, -0.0309,  0.0123,  0.0114,  0.0707,  0.0363,\n",
       "                       -0.0777,  0.0503,  0.0922,  0.0589, -0.0920,  0.0160,  0.0944, -0.0137,\n",
       "                        0.0880,  0.0310, -0.0145,  0.0752, -0.0800, -0.0420, -0.0176, -0.0023,\n",
       "                        0.0127,  0.0172,  0.0448,  0.0466,  0.0267,  0.0986,  0.0806, -0.0518,\n",
       "                       -0.0316, -0.0168, -0.0968, -0.0238, -0.0102,  0.0843,  0.0087,  0.0811,\n",
       "                        0.0621,  0.0497, -0.0105, -0.0186],\n",
       "                      [-0.0052, -0.0626,  0.0328,  0.0665,  0.0054,  0.0058,  0.0761,  0.0945,\n",
       "                       -0.0986,  0.0869,  0.0329,  0.0679,  0.0876, -0.0530, -0.0282, -0.0597,\n",
       "                        0.0445,  0.0706,  0.0240, -0.0143,  0.0226,  0.0749,  0.0006, -0.0255,\n",
       "                       -0.0459, -0.0963, -0.0123, -0.0369, -0.0404,  0.0529, -0.0148,  0.0506,\n",
       "                        0.0859, -0.0516,  0.0360, -0.0545, -0.0032, -0.0751,  0.0146, -0.0961,\n",
       "                       -0.0970,  0.0407, -0.0095,  0.0425, -0.0606, -0.0362,  0.0992,  0.0026,\n",
       "                       -0.0949,  0.0581, -0.0324, -0.0263, -0.0119,  0.0202, -0.0271,  0.0934,\n",
       "                       -0.0378, -0.0058, -0.0119, -0.0183,  0.0703,  0.0611, -0.0505, -0.0621,\n",
       "                        0.0247,  0.0383,  0.0175,  0.0904,  0.0648,  0.0937, -0.0823,  0.0217,\n",
       "                       -0.0815,  0.0057,  0.0962, -0.0592, -0.0691,  0.0069,  0.0371,  0.0337,\n",
       "                       -0.0009,  0.0924, -0.0460, -0.0854, -0.0666, -0.0968, -0.0614, -0.0485,\n",
       "                        0.0466, -0.0446,  0.0004, -0.0810,  0.0291,  0.0544, -0.0424,  0.0380,\n",
       "                       -0.0361,  0.0455, -0.0971, -0.0312],\n",
       "                      [ 0.0011,  0.0996, -0.0107,  0.0793, -0.0144,  0.0751, -0.0673, -0.0004,\n",
       "                       -0.0329, -0.0940,  0.0382,  0.0967,  0.0302,  0.0904, -0.0620, -0.0709,\n",
       "                        0.0833, -0.0866,  0.0369, -0.0302,  0.0069,  0.0200,  0.0978, -0.0965,\n",
       "                        0.0572,  0.0742,  0.0650,  0.0181,  0.0346,  0.0292,  0.0785, -0.0646,\n",
       "                        0.0633,  0.0141,  0.0075,  0.0881,  0.0577, -0.0238, -0.0927,  0.0544,\n",
       "                        0.0292, -0.0388, -0.0510,  0.0942,  0.0355,  0.0955,  0.0453,  0.0938,\n",
       "                       -0.0229, -0.0705, -0.0256, -0.0638, -0.0462, -0.0555,  0.0944,  0.0230,\n",
       "                        0.0671,  0.0051, -0.0196, -0.0129, -0.0938, -0.0706, -0.0532, -0.0645,\n",
       "                       -0.0825,  0.0413,  0.0546, -0.0352,  0.0136,  0.0168, -0.0654,  0.0015,\n",
       "                        0.0203,  0.0754,  0.0787, -0.0913, -0.0360,  0.0211, -0.0042, -0.0882,\n",
       "                        0.0112,  0.0682, -0.0861,  0.0587, -0.0481, -0.0098, -0.0414, -0.0428,\n",
       "                       -0.0560,  0.0086, -0.0908,  0.0163, -0.0912,  0.0588,  0.0680, -0.0809,\n",
       "                        0.0283, -0.0126,  0.0769, -0.0639],\n",
       "                      [-0.0219,  0.0870,  0.0187, -0.0294, -0.0982,  0.0750,  0.0557,  0.0904,\n",
       "                        0.0294, -0.0830, -0.0560,  0.0697, -0.0181,  0.0378,  0.0973,  0.0858,\n",
       "                        0.0200, -0.0744, -0.0905,  0.0217, -0.0745, -0.0140, -0.0504,  0.0535,\n",
       "                        0.0380, -0.0217, -0.0064,  0.0639, -0.0394, -0.0743, -0.0256, -0.0296,\n",
       "                       -0.0016,  0.0701,  0.0269, -0.0236, -0.0511, -0.0860,  0.0924,  0.0306,\n",
       "                       -0.0471, -0.0790, -0.0111,  0.0761, -0.0198,  0.0218, -0.0870,  0.0716,\n",
       "                       -0.0525,  0.0285, -0.0406,  0.0053,  0.0013,  0.0580,  0.0952,  0.0936,\n",
       "                        0.0511,  0.0557, -0.0837,  0.0757,  0.0780,  0.0725, -0.0134,  0.0582,\n",
       "                        0.0958, -0.0187,  0.0637, -0.0238, -0.0411, -0.0364, -0.0110, -0.0663,\n",
       "                       -0.0783,  0.0404, -0.0275,  0.0094,  0.0620,  0.0965,  0.0049,  0.0140,\n",
       "                        0.0670, -0.0165,  0.0523,  0.0236,  0.0231, -0.0318, -0.0896, -0.0316,\n",
       "                        0.0702,  0.0462, -0.0286, -0.0247,  0.0204, -0.0374, -0.0998, -0.0022,\n",
       "                       -0.0958,  0.0515,  0.0235, -0.0314]])),\n",
       "             ('linear_relu_stack.Output Layer.bias',\n",
       "              tensor([ 0.0497, -0.0413,  0.0651, -0.0727,  0.0635,  0.0966,  0.0046,  0.0711,\n",
       "                      -0.0971,  0.0582]))])"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.state_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:40.019027Z",
     "start_time": "2025-06-26T01:43:33.217395Z"
    }
   },
   "outputs": [],
   "source": [
    "from torch.utils.tensorboard import SummaryWriter\n",
    "class TensorboardLogger:\n",
    "    \"\"\"\n",
    "    Tensorboard日志记录类：记录训练过程中的损失和准确率\n",
    "    \n",
    "    参数:\n",
    "        log_dir: 日志保存目录,log_dir的父目录不要有中文\n",
    "    \"\"\"\n",
    "    def __init__(self, log_dir='tensorboard_logs'):\n",
    "\n",
    "        import os\n",
    "        \n",
    "        # 确保日志目录存在\n",
    "        if not os.path.exists(log_dir):\n",
    "            os.makedirs(log_dir)\n",
    "            \n",
    "        self.writer = SummaryWriter(log_dir) # 实例化SummaryWriter, log_dir是log存放路径，flush_secs是每隔多少秒写入磁盘\n",
    "        \n",
    "    def log_training(self, epoch, train_loss, train_acc):\n",
    "        \"\"\"\n",
    "        记录训练数据\n",
    "        \n",
    "        参数:\n",
    "            epoch: 当前训练轮数\n",
    "            train_loss: 训练损失\n",
    "            train_acc: 训练准确率\n",
    "        \"\"\"\n",
    "        self.writer.add_scalar('训练/损失', train_loss, epoch)\n",
    "        self.writer.add_scalar('训练/准确率', train_acc, epoch)\n",
    "        \n",
    "    def log_validation(self, epoch, val_loss, val_acc):\n",
    "        \"\"\"\n",
    "        记录验证数据\n",
    "        \n",
    "        参数:\n",
    "            epoch: 当前训练轮数\n",
    "            val_loss: 验证损失\n",
    "            val_acc: 验证准确率\n",
    "        \"\"\"\n",
    "        self.writer.add_scalar('验证/损失', val_loss, epoch)\n",
    "        self.writer.add_scalar('验证/准确率', val_acc, epoch)\n",
    "    \n",
    "    def log_lr(self, epoch, lr):\n",
    "        \"\"\"\n",
    "        记录学习率\n",
    "        \n",
    "        参数:\n",
    "            epoch: 当前训练轮数\n",
    "            lr: 学习率\n",
    "        \"\"\"\n",
    "        self.writer.add_scalar('学习率', lr, epoch)\n",
    "        \n",
    "    def log_model_graph(self, model, images):\n",
    "        \"\"\"\n",
    "        记录模型结构图\n",
    "        \n",
    "        参数:\n",
    "            model: 模型\n",
    "            images: 输入图像样本\n",
    "        \"\"\"\n",
    "        self.writer.add_graph(model, images)\n",
    "        \n",
    "    def close(self):\n",
    "        \"\"\"\n",
    "        关闭Tensorboard写入器\n",
    "        \"\"\"\n",
    "        self.writer.close()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 设置交叉熵损失函数，SGD优化器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:40.023837Z",
     "start_time": "2025-06-26T01:43:40.019952Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "损失函数: CrossEntropyLoss()\n",
      "优化器: SGD (\n",
      "Parameter Group 0\n",
      "    dampening: 0\n",
      "    differentiable: False\n",
      "    foreach: None\n",
      "    fused: None\n",
      "    lr: 0.01\n",
      "    maximize: False\n",
      "    momentum: 0.9\n",
      "    nesterov: False\n",
      "    weight_decay: 0\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "model = NeuralNetwork()\n",
    "# 定义损失函数和优化器\n",
    "loss_fn = nn.CrossEntropyLoss()  # 交叉熵损失函数，适用于多分类问题，里边会做softmax，还有会把0-9标签转换成one-hot编码\n",
    "# 用少量样本就能更新权重，训练更快，且更容易跳出局部最优\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.01, momentum=0.9)  # SGD优化器，学习率为0.01，动量为0.9\n",
    "\n",
    "print(\"损失函数:\", loss_fn)\n",
    "print(\"优化器:\", optimizer)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 编写训练函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:40.029823Z",
     "start_time": "2025-06-26T01:43:40.023837Z"
    }
   },
   "outputs": [],
   "source": [
    "def train_model(model, train_loader, val_loader, criterion, optimizer, device, num_epochs=5, early_stopping=None, model_saver=None, tensorboard_logger=None):\n",
    "    \"\"\"\n",
    "    训练模型函数\n",
    "    \n",
    "    参数:\n",
    "        model: 要训练的模型\n",
    "        train_loader: 训练数据加载器\n",
    "        val_loader: 验证数据加载器\n",
    "        criterion: 损失函数\n",
    "        optimizer: 优化器\n",
    "        device: 计算设备(CPU/GPU)\n",
    "        num_epochs: 训练轮数\n",
    "        early_stopping: 早停对象\n",
    "        model_saver: 模型保存对象\n",
    "        tensorboard_logger: Tensorboard日志记录器\n",
    "        \n",
    "    返回:\n",
    "        model: 训练好的模型\n",
    "        history: 训练历史数据，包含每轮的损失和准确率\n",
    "    \"\"\"\n",
    "    # 记录训练历史\n",
    "    history = {\n",
    "        'train_loss': [],\n",
    "        'train_acc': [],\n",
    "        'val_loss': [],\n",
    "        'val_acc': []\n",
    "    }\n",
    "    \n",
    "    # 训练循环\n",
    "    for epoch in range(num_epochs):\n",
    "        model.train()  # 设置为训练模式\n",
    "        running_loss = 0.0 #训练集损失\n",
    "        correct = 0 #训练集准确率\n",
    "        total = 0 #训练集总数\n",
    "        \n",
    "        # 训练一个epoch,把55000全部训练一遍\n",
    "        for i, (images, labels) in enumerate(train_loader):\n",
    "            images, labels = images.to(device), labels.to(device)\n",
    "            \n",
    "            # 梯度清零\n",
    "            optimizer.zero_grad()\n",
    "            \n",
    "            # 前向传播\n",
    "            outputs = model(images)\n",
    "            loss = criterion(outputs, labels)\n",
    "            \n",
    "            # 反向传播与优化\n",
    "            loss.backward() #反向传播，计算梯度\n",
    "            optimizer.step() #优化器更新参数\n",
    "            \n",
    "            # 统计训练集 损失和准确率\n",
    "            running_loss += loss.item()\n",
    "            _, predicted = torch.max(outputs.data, 1) #torch.max(outputs.data, 1)返回两个值，第一个是最大值，第二个是最大值的索引\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "            \n",
    "            # 每100个批次打印一次信息\n",
    "            if (i + 1) % 100 == 0:\n",
    "                print(f'轮次 [{epoch+1}/{num_epochs}], 批次 [{i+1}/{len(train_loader)}], 损失: {loss.item():.4f}', end='\\r')\n",
    "        \n",
    "        # 计算当前epoch的平均损失和准确率\n",
    "        epoch_train_loss = running_loss / len(train_loader)\n",
    "        epoch_train_acc = 100 * correct / total\n",
    "        \n",
    "        # 使用evaluate_model函数评估验证集\n",
    "        val_acc, val_loss = evaluate_model(model, val_loader, device, criterion)\n",
    "        \n",
    "        # 记录历史数据\n",
    "        history['train_loss'].append(epoch_train_loss)\n",
    "        history['train_acc'].append(epoch_train_acc)\n",
    "        history['val_loss'].append(val_loss)\n",
    "        history['val_acc'].append(val_acc)\n",
    "        \n",
    "        # 如果有Tensorboard记录器，记录训练和验证指标\n",
    "        if tensorboard_logger is not None:\n",
    "            tensorboard_logger.log_training(epoch,epoch_train_loss,epoch_train_acc)\n",
    "            tensorboard_logger.log_validation(epoch,val_loss,val_acc)\n",
    "        \n",
    "        print(f'轮次 {epoch+1}/{num_epochs} 完成! 训练损失: {epoch_train_loss:.4f}, 训练准确率: {epoch_train_acc:.2f}%, 验证损失: {val_loss:.4f}, 验证准确率: {val_acc:.2f}%')\n",
    "        \n",
    "        # 如果有模型保存器，保存模型\n",
    "        if model_saver is not None:\n",
    "            model_saver(model, val_acc, epoch)\n",
    "        \n",
    "        # 如果有早停器，检查是否应该早停\n",
    "        if early_stopping is not None:\n",
    "            early_stopping(val_acc)\n",
    "            if early_stopping.early_stop:\n",
    "                print(f'早停: 已有{early_stopping.patience}轮验证损失没有改善！')\n",
    "                break\n",
    "    \n",
    "    return model, history\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:40.032419Z",
     "start_time": "2025-06-26T01:43:40.030828Z"
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:43:40.035848Z",
     "start_time": "2025-06-26T01:43:40.032419Z"
    }
   },
   "outputs": [],
   "source": [
    "model = NeuralNetwork(layers_num=19)\n",
    "\n",
    "optimizer = torch.optim.Adam(model.parameters())  # SGD优化器，学习率为0.01，动量为0.9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:45:37.732814Z",
     "start_time": "2025-06-26T01:43:40.035848Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "使用设备: cpu\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "eb16504bf40c4acc9fe6f48af6284dc6",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/25800 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "print(f\"使用设备: {device}\")\n",
    "model = model.to(device) #将模型移动到GPU\n",
    "early_stopping=EarlyStopping(patience=5, delta=0.001)\n",
    "model_saver=ModelSaver(save_dir='model_weights', save_best_only=True)\n",
    "tensorboard_logger=TensorboardLogger(log_dir='logs')\n",
    "\n",
    "model, history = train_classification_model(model, train_loader, val_loader, loss_fn, optimizer, device, num_epochs=30, early_stopping=None, model_saver=model_saver, tensorboard_logger=tensorboard_logger)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:45:37.737721Z",
     "start_time": "2025-06-26T01:45:37.732814Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 0.45156195759773254, 'acc': 87.5, 'step': 25700},\n",
       " {'loss': 0.3700653314590454, 'acc': 84.375, 'step': 25701},\n",
       " {'loss': 0.31252509355545044, 'acc': 85.9375, 'step': 25702},\n",
       " {'loss': 0.24524806439876556, 'acc': 96.875, 'step': 25703},\n",
       " {'loss': 0.5665648579597473, 'acc': 85.9375, 'step': 25704},\n",
       " {'loss': 0.5439299941062927, 'acc': 87.5, 'step': 25705},\n",
       " {'loss': 0.40382546186447144, 'acc': 82.8125, 'step': 25706},\n",
       " {'loss': 0.4917954206466675, 'acc': 82.8125, 'step': 25707},\n",
       " {'loss': 0.4252033531665802, 'acc': 82.8125, 'step': 25708},\n",
       " {'loss': 0.326107919216156, 'acc': 87.5, 'step': 25709},\n",
       " {'loss': 0.39733925461769104, 'acc': 85.9375, 'step': 25710},\n",
       " {'loss': 0.33498242497444153, 'acc': 89.0625, 'step': 25711},\n",
       " {'loss': 0.5644455552101135, 'acc': 68.75, 'step': 25712},\n",
       " {'loss': 0.5203846096992493, 'acc': 79.6875, 'step': 25713},\n",
       " {'loss': 0.3195684850215912, 'acc': 92.1875, 'step': 25714},\n",
       " {'loss': 0.22514119744300842, 'acc': 95.3125, 'step': 25715},\n",
       " {'loss': 0.40687721967697144, 'acc': 82.8125, 'step': 25716},\n",
       " {'loss': 0.5033684968948364, 'acc': 82.8125, 'step': 25717},\n",
       " {'loss': 0.42464709281921387, 'acc': 85.9375, 'step': 25718},\n",
       " {'loss': 0.4263826012611389, 'acc': 84.375, 'step': 25719},\n",
       " {'loss': 0.4383805990219116, 'acc': 84.375, 'step': 25720},\n",
       " {'loss': 0.5149164795875549, 'acc': 84.375, 'step': 25721},\n",
       " {'loss': 0.5114677548408508, 'acc': 84.375, 'step': 25722},\n",
       " {'loss': 0.3655644953250885, 'acc': 90.625, 'step': 25723},\n",
       " {'loss': 0.4359126687049866, 'acc': 82.8125, 'step': 25724},\n",
       " {'loss': 0.4336676299571991, 'acc': 78.125, 'step': 25725},\n",
       " {'loss': 0.4735237658023834, 'acc': 71.875, 'step': 25726},\n",
       " {'loss': 0.304503470659256, 'acc': 84.375, 'step': 25727},\n",
       " {'loss': 0.3762941360473633, 'acc': 82.8125, 'step': 25728},\n",
       " {'loss': 0.43987229466438293, 'acc': 84.375, 'step': 25729},\n",
       " {'loss': 0.5671307444572449, 'acc': 84.375, 'step': 25730},\n",
       " {'loss': 0.33821994066238403, 'acc': 82.8125, 'step': 25731},\n",
       " {'loss': 0.47481971979141235, 'acc': 81.25, 'step': 25732},\n",
       " {'loss': 0.4183129370212555, 'acc': 82.8125, 'step': 25733},\n",
       " {'loss': 0.3989521563053131, 'acc': 79.6875, 'step': 25734},\n",
       " {'loss': 0.3621745705604553, 'acc': 90.625, 'step': 25735},\n",
       " {'loss': 0.4323694705963135, 'acc': 84.375, 'step': 25736},\n",
       " {'loss': 0.40486031770706177, 'acc': 82.8125, 'step': 25737},\n",
       " {'loss': 0.38892194628715515, 'acc': 90.625, 'step': 25738},\n",
       " {'loss': 0.24169409275054932, 'acc': 89.0625, 'step': 25739},\n",
       " {'loss': 0.4912433624267578, 'acc': 82.8125, 'step': 25740},\n",
       " {'loss': 0.7969319820404053, 'acc': 81.25, 'step': 25741},\n",
       " {'loss': 0.3013918101787567, 'acc': 89.0625, 'step': 25742},\n",
       " {'loss': 0.39856916666030884, 'acc': 84.375, 'step': 25743},\n",
       " {'loss': 0.3135840594768524, 'acc': 92.1875, 'step': 25744},\n",
       " {'loss': 0.3130088746547699, 'acc': 90.625, 'step': 25745},\n",
       " {'loss': 0.31826549768447876, 'acc': 89.0625, 'step': 25746},\n",
       " {'loss': 0.36030763387680054, 'acc': 84.375, 'step': 25747},\n",
       " {'loss': 0.3474549949169159, 'acc': 85.9375, 'step': 25748},\n",
       " {'loss': 0.29322871565818787, 'acc': 90.625, 'step': 25749},\n",
       " {'loss': 0.3681931793689728, 'acc': 87.5, 'step': 25750},\n",
       " {'loss': 0.5972123146057129, 'acc': 73.4375, 'step': 25751},\n",
       " {'loss': 0.19657644629478455, 'acc': 93.75, 'step': 25752},\n",
       " {'loss': 0.5442760586738586, 'acc': 89.0625, 'step': 25753},\n",
       " {'loss': 0.36858537793159485, 'acc': 89.0625, 'step': 25754},\n",
       " {'loss': 0.18724976480007172, 'acc': 95.3125, 'step': 25755},\n",
       " {'loss': 0.4951101243495941, 'acc': 82.8125, 'step': 25756},\n",
       " {'loss': 0.4382416009902954, 'acc': 89.0625, 'step': 25757},\n",
       " {'loss': 0.28024089336395264, 'acc': 89.0625, 'step': 25758},\n",
       " {'loss': 0.40626755356788635, 'acc': 84.375, 'step': 25759},\n",
       " {'loss': 0.3522399067878723, 'acc': 89.0625, 'step': 25760},\n",
       " {'loss': 0.5933446884155273, 'acc': 84.375, 'step': 25761},\n",
       " {'loss': 0.19376762211322784, 'acc': 95.3125, 'step': 25762},\n",
       " {'loss': 0.19830629229545593, 'acc': 95.3125, 'step': 25763},\n",
       " {'loss': 0.22735896706581116, 'acc': 95.3125, 'step': 25764},\n",
       " {'loss': 0.45184576511383057, 'acc': 81.25, 'step': 25765},\n",
       " {'loss': 0.29346299171447754, 'acc': 89.0625, 'step': 25766},\n",
       " {'loss': 0.33850473165512085, 'acc': 87.5, 'step': 25767},\n",
       " {'loss': 0.5188564658164978, 'acc': 78.125, 'step': 25768},\n",
       " {'loss': 0.46810975670814514, 'acc': 89.0625, 'step': 25769},\n",
       " {'loss': 0.6320687532424927, 'acc': 82.8125, 'step': 25770},\n",
       " {'loss': 0.36953094601631165, 'acc': 85.9375, 'step': 25771},\n",
       " {'loss': 0.3989766240119934, 'acc': 87.5, 'step': 25772},\n",
       " {'loss': 0.30351313948631287, 'acc': 81.25, 'step': 25773},\n",
       " {'loss': 0.5791353583335876, 'acc': 81.25, 'step': 25774},\n",
       " {'loss': 0.48405733704566956, 'acc': 84.375, 'step': 25775},\n",
       " {'loss': 0.5802315473556519, 'acc': 84.375, 'step': 25776},\n",
       " {'loss': 0.5210587978363037, 'acc': 81.25, 'step': 25777},\n",
       " {'loss': 0.4178693890571594, 'acc': 82.8125, 'step': 25778},\n",
       " {'loss': 0.5586867332458496, 'acc': 82.8125, 'step': 25779},\n",
       " {'loss': 0.432679146528244, 'acc': 90.625, 'step': 25780},\n",
       " {'loss': 0.33740612864494324, 'acc': 95.3125, 'step': 25781},\n",
       " {'loss': 0.38973304629325867, 'acc': 82.8125, 'step': 25782},\n",
       " {'loss': 0.5773942470550537, 'acc': 82.8125, 'step': 25783},\n",
       " {'loss': 0.5341506004333496, 'acc': 82.8125, 'step': 25784},\n",
       " {'loss': 0.3445549011230469, 'acc': 89.0625, 'step': 25785},\n",
       " {'loss': 0.4532396197319031, 'acc': 90.625, 'step': 25786},\n",
       " {'loss': 0.21224349737167358, 'acc': 95.3125, 'step': 25787},\n",
       " {'loss': 0.7358494997024536, 'acc': 82.8125, 'step': 25788},\n",
       " {'loss': 0.5250123143196106, 'acc': 79.6875, 'step': 25789},\n",
       " {'loss': 0.7893940806388855, 'acc': 79.6875, 'step': 25790},\n",
       " {'loss': 0.4211861789226532, 'acc': 87.5, 'step': 25791},\n",
       " {'loss': 0.20664341747760773, 'acc': 95.3125, 'step': 25792},\n",
       " {'loss': 0.3235764801502228, 'acc': 84.375, 'step': 25793},\n",
       " {'loss': 0.6696273684501648, 'acc': 81.25, 'step': 25794},\n",
       " {'loss': 0.3146786391735077, 'acc': 87.5, 'step': 25795},\n",
       " {'loss': 0.44230857491493225, 'acc': 82.8125, 'step': 25796},\n",
       " {'loss': 0.385302871465683, 'acc': 85.9375, 'step': 25797},\n",
       " {'loss': 0.39855584502220154, 'acc': 92.1875, 'step': 25798}]"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history['train'][-100:-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:45:37.741226Z",
     "start_time": "2025-06-26T01:45:37.737721Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 2.3059384548187256, 'acc': 8.9, 'step': 0},\n",
       " {'loss': 0.9394040296077728, 'acc': 59.86, 'step': 500},\n",
       " {'loss': 0.8450613952636719, 'acc': 68.5, 'step': 1000},\n",
       " {'loss': 0.8028172035694122, 'acc': 70.52, 'step': 1500},\n",
       " {'loss': 0.7899430920124054, 'acc': 77.96, 'step': 2000},\n",
       " {'loss': 0.7758129446983337, 'acc': 74.14, 'step': 2500},\n",
       " {'loss': 0.7514499036312103, 'acc': 75.48, 'step': 3000},\n",
       " {'loss': 0.8630182278156281, 'acc': 75.6, 'step': 3500},\n",
       " {'loss': 0.6914906203269958, 'acc': 81.48, 'step': 4000},\n",
       " {'loss': 0.7226212050914764, 'acc': 80.24, 'step': 4500},\n",
       " {'loss': 0.7919076583862305, 'acc': 79.22, 'step': 5000},\n",
       " {'loss': 0.7170941248416901, 'acc': 79.86, 'step': 5500},\n",
       " {'loss': 0.7296894046545028, 'acc': 81.14, 'step': 6000},\n",
       " {'loss': 0.7934153062582016, 'acc': 82.34, 'step': 6500},\n",
       " {'loss': 0.719561680984497, 'acc': 77.76, 'step': 7000},\n",
       " {'loss': 0.7106690313339233, 'acc': 80.26, 'step': 7500},\n",
       " {'loss': 0.7617602899312973, 'acc': 80.88, 'step': 8000},\n",
       " {'loss': 0.7110689084053039, 'acc': 81.64, 'step': 8500},\n",
       " {'loss': 0.7237729719161987, 'acc': 83.86, 'step': 9000},\n",
       " {'loss': 0.68355771048069, 'acc': 83.02, 'step': 9500},\n",
       " {'loss': 0.7303839120864868, 'acc': 78.46, 'step': 10000},\n",
       " {'loss': 0.6990442265987397, 'acc': 82.56, 'step': 10500},\n",
       " {'loss': 0.8076403230667114, 'acc': 82.9, 'step': 11000},\n",
       " {'loss': 0.7740944254875183, 'acc': 83.94, 'step': 11500},\n",
       " {'loss': 0.7558105283260346, 'acc': 82.36, 'step': 12000},\n",
       " {'loss': 0.7293479207515716, 'acc': 82.62, 'step': 12500},\n",
       " {'loss': 0.7584041621208191, 'acc': 83.5, 'step': 13000},\n",
       " {'loss': 0.8534797309398651, 'acc': 80.86, 'step': 13500},\n",
       " {'loss': 0.8090982352733612, 'acc': 83.16, 'step': 14000},\n",
       " {'loss': 0.7871802863836288, 'acc': 78.9, 'step': 14500},\n",
       " {'loss': 0.809178373670578, 'acc': 83.24, 'step': 15000},\n",
       " {'loss': 0.8448704777240753, 'acc': 83.3, 'step': 15500},\n",
       " {'loss': 0.7555338587284088, 'acc': 84.4, 'step': 16000},\n",
       " {'loss': 0.7986259265422821, 'acc': 82.94, 'step': 16500},\n",
       " {'loss': 0.8086388018608093, 'acc': 83.04, 'step': 17000},\n",
       " {'loss': 0.8924514628887177, 'acc': 83.76, 'step': 17500},\n",
       " {'loss': 0.8676695788145066, 'acc': 81.48, 'step': 18000},\n",
       " {'loss': 0.9090602322816849, 'acc': 83.82, 'step': 18500},\n",
       " {'loss': 0.8308282998085021, 'acc': 84.3, 'step': 19000},\n",
       " {'loss': 0.763815605354309, 'acc': 83.1, 'step': 19500},\n",
       " {'loss': 0.7963656578302384, 'acc': 82.44, 'step': 20000},\n",
       " {'loss': 0.8371497143030167, 'acc': 83.32, 'step': 20500},\n",
       " {'loss': 0.9626409640789032, 'acc': 84.4, 'step': 21000},\n",
       " {'loss': 0.8215232098579407, 'acc': 82.8, 'step': 21500},\n",
       " {'loss': 0.8887167245626449, 'acc': 83.7, 'step': 22000},\n",
       " {'loss': 0.9331947720050812, 'acc': 82.5, 'step': 22500},\n",
       " {'loss': 0.9324573991775512, 'acc': 84.44, 'step': 23000},\n",
       " {'loss': 0.9494583266973495, 'acc': 81.08, 'step': 23500},\n",
       " {'loss': 0.8921439774274826, 'acc': 83.96, 'step': 24000},\n",
       " {'loss': 0.9372970528364182, 'acc': 83.84, 'step': 24500},\n",
       " {'loss': 0.8790701544046402, 'acc': 83.04, 'step': 25000}]"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "history['val'][-1000:-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 绘制损失曲线和准确率曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:45:37.744941Z",
     "start_time": "2025-06-26T01:45:37.741226Z"
    }
   },
   "outputs": [],
   "source": [
    "# 导入绘图库\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import font_manager\n",
    "def plot_learning_curves1(history):\n",
    "    # 设置中文字体支持\n",
    "    plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体\n",
    "    plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题\n",
    "\n",
    "    # 创建一个图形，包含两个子图（损失和准确率）\n",
    "    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 5))\n",
    "\n",
    "    # 绘制损失曲线\n",
    "    epochs = range(1, len(history['train_loss']) + 1)\n",
    "    ax1.plot(epochs, history['train_loss'], 'b-', label='训练损失')\n",
    "    ax1.plot(epochs, history['val_loss'], 'r-', label='验证损失')\n",
    "    ax1.set_title('训练与验证损失')\n",
    "    ax1.set_xlabel('轮次')\n",
    "    ax1.set_ylabel('损失')\n",
    "    ax1.legend()\n",
    "    ax1.grid(True)\n",
    "\n",
    "    # 绘制准确率曲线\n",
    "    ax2.plot(epochs, history['train_acc'], 'b-', label='训练准确率')\n",
    "    ax2.plot(epochs, history['val_acc'], 'r-', label='验证准确率')\n",
    "    ax2.set_title('训练与验证准确率')\n",
    "    ax2.set_xlabel('轮次')\n",
    "    ax2.set_ylabel('准确率 (%)')\n",
    "    ax2.legend()\n",
    "    ax2.grid(True)\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:45:37.816716Z",
     "start_time": "2025-06-26T01:45:37.744941Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_learning_curves(history, sample_step=500)  #横坐标是 steps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-26T01:48:40.300725Z",
     "start_time": "2025-06-26T01:48:39.548524Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(83.27, 0.8023402352809906)"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 在测试集上评估模型\n",
    "test_accuracy = evaluate_model(model, test_loader, device, loss_fn)\n",
    "test_accuracy\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
